Streaming live or prerecorded media content to client devices such as set-top boxes, computers, smartphones, mobile devices, tablet computers, gaming consoles, and other devices over networks such as the internet has become increasingly popular. Delivery of such media content commonly relies on adaptive bitrate streaming technologies such as HTTP Live Streaming (HLS), Smooth Streaming, and MPEG-DASH.
A stream of media content encoded with adaptive bitrate streaming techniques is generally divided into multiple chunks, each of which can be independently accessible. A client device can play a media stream by requesting and decoding a first chunk, requesting and decoding a second chunk, and continuing to request and decode subsequent chunks for as long as the user of the client device desires to play the media content, or until playback reaches the end of the media content.
The division of an adaptive bitrate stream into multiple chunks also allows a client device to jump to specific chunks of the stream when desired. For instance, a client device can request a particular chunk located halfway through a stream to begin playback of the stream at the halfway point of the media content, or it can jump between different points in the media content by requesting chunks located at associated positions in the stream. Additionally, segmentation of the streams can allow the client device to transition between different versions of a stream that have each been encoded at different quality levels. For instance, when network conditions are congested, a client device can begin playback of a media stream by requesting chunks encoded with a low bitrate, but when network conditions improve the client device can transition to a higher quality version of the stream by requesting subsequent chunks encoded at a higher bitrate.
The segmentation of a media stream also allows chunks of advertising content to be inserted into the stream between chunks of main content. While some streaming video solutions switch to a different video player or begin an entirely separate video stream to display an advertisement, which can take time, the segmentation of an adaptive bitrate stream allows advertisements to be inserted as additional chunks between existing chunks of the main media stream, such that an advertisement is played just as if it were the next chunk of the main media stream without having to change video players or load a new stream.
Entities such as content providers, network operators, and set-top box vendors often benefit financially by displaying or allowing advertisements to be inserted into media streams. However, viewers often prefer to skip or fast-forward through such advertisements. What is needed is a method for detecting, with a client device, when advertisements have been inserted into a media stream and then either preventing the client device from skipping the advertisements or having the client device automatically skip the advertisements.